package formatos;

import java.text.ParseException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;

import utils.fecha.Formateador;
import utils.fecha.FormateadorSimple;

public class Flexible extends Formateador {

	private Collection<FormateadorSimple> formateadores;

	public Flexible() {
		formateadores = new ArrayList<FormateadorSimple>();
	}

	public void setFormateadores(Collection<FormateadorSimple> formateadores) {
		this.formateadores = formateadores;
	}

	public Collection<FormateadorSimple> getFormateadores() {
		return formateadores;
	}

	/**
	 * Convierte una fecha string a date,utilzando los formaters que conoce
	 * 
	 * @version 1.0
	 * @param fechaEntrada
	 *            : fecha a convertir
	 * @return fechaPareseada: fecha convertida(null en caso de no tener el
	 *         formater correspondiente)
	 * @throws ParseException
	 * @throws ParseException
	 */
	public Date convertir(String fechaEntrada) throws ParseException {
		for (FormateadorSimple formateador : formateadores) {
			try {
				return formateador.convertir(fechaEntrada);
			} catch (ParseException e) {
				// Ignorar el error e intentar con el proximo
			}
		}
		/*
		 * si la fecha es null es por que ninguno la pudo parsear,como los
		 * parseadores lanzan parseException si no pudieron parsear,hacemos lo
		 * mismo aca para mantener el mismo comportamiento.
		 */
		throw new ParseException("", 0);
	}

	public String convertirHora(long hora, long minutos) {
		for (FormateadorSimple formateador : formateadores) {
			
			return formateador.convertirHora(hora,minutos);
			
		}
		return null;	
	}

}
